{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 一.原理\n",
    "上一节介绍的基于KNN的异常检测算法，它是基于绝对距离进行的计算，对于某些特殊的数据分布，可能没法很好的识别异常点，如下图，$C_1,C2$两处显然都是正常的点，但由于它们的概率密度不同，$C_1$中的点很容易被KNN误识为异常点，而真正的异常点$o_1,o_2$反而不会被识别出来。\n",
    "![avatar](./source/20_lof_01.png)  \n",
    "\n",
    "所以，对于距离的考虑，不能过于“绝对”，而是要考虑“相对”的概念，接下来看看LOF（Local Ourlier Factor，局部异常因子）是如何处理的。\n",
    "\n",
    "#### K-近邻距离(k-distance)\n",
    "\n",
    "首先，定义距离数据点$p$最近的点中，第$k$个最近的点与点$p$之间的距离称为点$p$的k-近邻距离，记作$d_k(p)$  \n",
    "\n",
    "#### 可达距离(rechability distance)\n",
    "\n",
    "可达距离定义如下，其中$d(p,o)$表示点$p$与点$o$之间的直接距离\n",
    "$$\n",
    "rd_k(p,o)=\\max\\left\\{d_k(o),d(p,o)\\right\\}\n",
    "$$\n",
    "\n",
    "#### 局部可达密度（local rachability density）\n",
    "有了可达距离，就可以定义局部可达密度了\n",
    "\n",
    "$$\n",
    "lrd_k(p)=\\frac{1}{\\sum_{o\\in N_k(p)}rd_k(p,o)/|N_k(p)|}\n",
    "$$  \n",
    "\n",
    "这里，$N_k(p)$表示与点$p$最近的$k$个点的集合，显然点$p$周围的数据点越密集，它的局部可达密度就越大，越稀疏，它的局部可达密度就越小   \n",
    "\n",
    "#### 局部异常因子（local outlier factor）\n",
    "\n",
    "接下来考虑，相对密度，将点$p$的最近$k$个点的平均局部可达密度跟数据点$p$的局部可达密度相比，便是LOF的定义：   \n",
    "\n",
    "$$\n",
    "LOF_k(p)=\\frac{\\sum_{o\\in N_k(p)}lrd_k(o)}{|N_k(p)|}/lrd_k(p)\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 二.代码实现\n",
    "\n",
    "封装在ml_models.outlier_detect..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "os.chdir('../')\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "from ml_models.outlier_detect import LOF"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#造数据\n",
    "import numpy as np\n",
    "X = np.c_[np.random.random(size=(100, 2)).T, np.random.random(size=(200, 2)).T * 5].T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#训练\n",
    "lof = LOF()\n",
    "score = lof.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#预测\n",
    "thresh=np.percentile(score,95)#前1%设置为异常值\n",
    "plt.scatter(x=X[:, 0], y=X[:, 1], c=score > thresh)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "虽然LOF解决了KNN中“绝对”距离的问题，但与KNN一样，它的主要瓶颈还是复杂度太高了，为$O(N^2)$   \n",
    "\n",
    "\n",
    "参考:   \n",
    "https://zhuanlan.zhihu.com/p/28178476"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
